Enumeratie
Opsommingstypes
De enumeratietypen worden door benoemde constanten vertegenwoordigd. Elke enumeratiegegevenstype moet een onderliggend integertype hebben, zoals short, ushort, int, uint, byte, sbyte, long of ulong. Het type char kan niet als onderliggend type van een enumeratietype worden gebruikt.
Een enum type is een onderscheiden waardetype dat een een verzameling van benoemde constanten declareert.
Het voorbeeld volgende declareert een enum type met de naam Kleur met members Rood, Groen en Blauw.
enum Kleur { Rood, Groen, Blauw }
Voorbeeld 1
// Dit is een gegevenstype en geen variabele! // Je kan geen enum in een methode aanmaken, // wel op klasse niveau of op namespace niveau. public enum DagenVanDeWeek { Ma, Di, Wo, Do, Vr, Za, Zo }; class EnumSamples { public static string ASimpleEnumSample(DagenVanDeWeek d) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Een eenvoudig voorbeeld:"); int maandag = (int) DagenVanDeWeek.Ma; sb.AppendFormat("De waarde van Ma is {0}\n", maandag); if (d == DagenVanDeWeek.Ma) { sb.AppendLine("Je hebt maandag als parameter meegegeven."); } return sb.ToString(); }
voorbeeld 2
In dit voorbeeld wordt een enumeratie Days gedeclareerd. Twee enumerators worden expliciet naar int geconverteerd en toegekend aan int variabelen:
// enum initialization: public class EnumTest { enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; public static void Main() { int x = (int) Days.Sun; int y = (int) Days.Fri; Console.WriteLine("Sun = {0}", x); Console.WriteLine("Fri = {0}", y); } }
Output
Sun = 2 Fri = 7
Let erop dat als je de initialiseerder uit Sat=1 verwijdert, je het volgende resultaat krijgt:
Sun = 1 Fri = 6
Voorbeeld 3
In dit voorbeeld wordt de base-type optie gebruikt om een enum te declareren waarvan de leden van het long zijn. Let erop dat ofschoon het onderliggende type van de enumeratie van het type long is dat je nog steeds expliciet moet converteren naar long met behulp van cast:
// Using long enumerators public class EnumTest { enum Range :long {Max = 2147483648L, Min = 255L}; public static void Main() { long x = (long) Range.Max; long y = (long) Range.Min; Console.WriteLine("Max = {0}", x); Console.WriteLine("Min = {0}", y); } }
Output
Max = 2147483648 Min = 255